#include <stdio.h>
#include <stdbool.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sched.h>
#include <semaphore.h>

//funcao de inicializacao
bool func_init(int PID, double Intervalo, double Tmax);

//funcao de inicio do loop
void func_start_loop(int PID);

//funcao de final do loop
void func_end_loop(int PID);

//funcao de finalzacao de processo
bool func_term(int PID);

//funcao de tratar evento do calendario
void trata_eventos();



/*
Função de inicialização do processo de tempo real: esta função deverá ser chamada por um processo que queira ser tratado como sendo de tempo real, informando ao kernel os valores X e Y de tempo para serem considerados do seu loop. Uma instancia com informações do processo é incluída em uma lista de processos RT do kernel.

Função de início do loop: esta função deverá ser chamada no início do loop crítico que deve ser executado em tempo real. A função irá aumentar a prioridade do processo para o máximo, irá criar um evento de fim de loop X segundos depois do instante atual e um evento de início do próximo loop Y segundos após o tempo atual.

Função de final do loop: esta função é chamada no final do loop crítico do processo, de forma a sinalizar que o loop chegou ao fim. A função irá remover o evento de fim de loop do calendário, diminuir a prioridade do processo para o padrão e fazê-lo dormir, esperando o próximo evento de início de loop já marcado.

Função de finalização do processo: esta função finaliza a participação do processo como tempo real, removendo-o da lista de processos RT e qualquer evento associado a ele.
*/
